/*
 * @lc app=leetcode.cn id=605 lang=java
 *
 * [605] 种花问题
 *
 * https://leetcode.cn/problems/can-place-flowers/description/
 *
 * algorithms
 * Easy (32.71%)
 * Likes:    504
 * Dislikes: 0
 * Total Accepted:    149.2K
 * Total Submissions: 456.4K
 * Testcase Example:  '[1,0,0,0,1]\n1'
 *
 * 假设有一个很长的花坛，一部分地块种植了花，另一部分却没有。可是，花不能种植在相邻的地块上，它们会争夺水源，两者都会死去。
 * 
 * 给你一个整数数组  flowerbed 表示花坛，由若干 0 和 1 组成，其中 0 表示没种植花，1 表示种植了花。另有一个数 n
 * ，能否在不打破种植规则的情况下种入 n 朵花？能则返回 true ，不能则返回 false。
 * 
 * 
 * 
 * 示例 1：
 * 
 * 
 * 输入：flowerbed = [1,0,0,0,1], n = 1
 * 输出：true
 * 
 * 
 * 示例 2：
 * 
 * 
 * 输入：flowerbed = [1,0,0,0,1], n = 2
 * 输出：false
 * 
 * 
 * 
 * 
 * 提示：
 * 
 * 
 * 1 
 * flowerbed[i] 为 0 或 1
 * flowerbed 中不存在相邻的两朵花
 * 0 
 * 
 * 
 */

// @lc code=start
class Solution {
    public boolean canPlaceFlowers(int[] flowerbed, int n) {
        int count=0;
        if (flowerbed.length==1) {
            if (flowerbed[0]==1) {
                return n==0;
            }
            else{
                return 1>=n;
            }
        }
        if (flowerbed[0]+flowerbed[1]==0) {
            count+=1;
            flowerbed[0]=1;
        }
        for (int i = 2; i < flowerbed.length-1; i++) {
            if (flowerbed[i-1]+flowerbed[i+1]+flowerbed[i]==0) {
                flowerbed[i]=1;
                count+=1;
            }
        }
        if (flowerbed[flowerbed.length-2]+flowerbed[flowerbed.length-1]==0) {
            count+=1;
            flowerbed[flowerbed.length-1]=1;
        }
        return count>=n;
    }
}
// @lc code=end

